package _4_rpc教程

import (
	"net/rpc"
)

/*
服务端
	1、注册rpc服务对象，给对象绑定方法(1.定义类,2.绑定类方法)
		rpc.RegisterName("服务名","回调对象")
	2、创建监听器
		listen,err := net.Listen()
	3、建立连接
		conn,err := listen.Accept()
	4、将连接绑定rpc服务
		rpc.ServeConn(conn)

客户端
	1、用rpc连接服务器，
		conn,err := rpc.Dial()
	2、调用远程函数
		conn.call("服务名.方法名","传入参数","传出参数")

注册服务
func (server *server) RegisterName(name string, rcvr any) error()
写RPC程序，必须符合4个基本条件，不然RPC用不了
	结构体字段首字母要大写，可以别人调用
	函数名必须首字母大写
	函数第一参数是接收参数，第二个参数是返回给客户端的参数(传出)，必须是指针类型
	函数还必须有一个返回值error
*/

// 举例：
type World struct{}

func (w World) HelloWorld(name string, resp *string) error {
	return nil
}
func Test1() {
	rpc.RegisterName("服务名", new(World))
}

//绑定服务
/*
func (service *service) ServerConn(coon io.ReadWriteCloser) {}
	conn:成功建立好连接的socket ---> conn
*/

//远程调用
/*
func (client *Client) Call(serviceMethod string, args interface{}, reply interface{}) error
serviceMethod:服务名.方法名
args:传入参数，方法需要的数据
reply:传出参数.定义var变量，&变量名 完成传参
*/
